vs2008多线程调试[vs2019多线程调试] | 您所在的位置:网站首页 › ogre exampleapplication › vs2008多线程调试[vs2019多线程调试] |
求OGRE1.7.4在VS2008下的配置方式
一.安装VS2008。 二.安装VS2008SP1,一定要装哦 三.安装OgreSDK。对应VS2008的. 四.打开VS2008,新建项目Example,添加源文件Example.cpp 五.设置IDE环境(步骤如下) 调试-->工作目录为"..\OgreSDK\bin\debug"(这里有使Ogre能正常工作的dll); C/C++-->常规-->附加包含目录中加三个目录:("..\OgreSDK\Project\Example\include""..\OgreSDK\include""..\OgreSDK\samples\include"); C/C++-->代码生成-->运行时库"为"多线程调试 DLL (/MDd)"(这个好像是默认的); 链接器-->常规-->输出文件为"..\OgreSDK\bin\debug\$(ProjectName).exe" ; 链接器-->常规-->附加库目录中添加"..\OgreSDK\lib"; 链接器-->输入-->附加依赖项中添加"OgreMain_d.lib"和"OIS_d.lib"(如果是Release版则添加"OgreMain.lib"和"OIS.lib") 六.添加以下代码: #include "ExampleApplication.h" class MyApplication : public ExampleApplication { protected: public: MyApplication() { } ~MyApplication() { } protected: void createScene(void) { } }; #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include "windows.h" INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) #else int main(int argc, char **argv) #endif { // Create application object MyApplication app; try { app.go(); } catch( Exception e ) { #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 MessageBoxA( NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL); #else fprintf(stderr, "An exception has occurred: %s ", e.getFullDescription().c_str()); #endif } return 0; } 七.If you get an Ogre Exception which complains about being unable to load a dynamic plugin then go to ..\OgreSDK\bin\debug\Plugins.cfg and take out the following lines.. (去..\OgreSDK\bin\debug\Plugins.cfg删除以下行并保存): Plugin=Plugin_PCZSceneManager_d.dll Plugin=Plugin_OctreeZone_d.dll 八.开始执行,exe文件会在"..\OgreSDK\bin\debug\Example.exe"。 运行结果为带ogre的logo黑屏 又是VS2008 (vc++)问题 多线程的CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );//用于创建工作者线程 返回值: 一个指向新线程的线程对象 pfnThreadProc : 线程的入口函数,声明一定要如下: UINT MyThreadFunction( LPVOID pParam ); 因为类的成员函数依赖于对象,成员函数都有个隐含的this指针,所以当做全局函数调用时会出错。 [img]VS 多线程调试和多线程DLL调试有什么区别区别是动态链接还是静态链接C运行时库(C runtime Library, CRT)。 如果是动态链接(MD/MDd),你的程序就依赖C运行时的动态链接库(比如VS2010的msvr100.dll),当你的程序在其他没有这个dll的电脑上运行就会出现错误(找不到这个dll)。 如果是静态链接(MT/MTD),C运行库直接链接到你的程序里,你的程序就不依赖C运行时库的dll了。 微软是推荐是用动态链接的,因为这种链接方式可以减少可执行文件的大小、可以减少内存的使用、避免链接问题。 关于vs2008多线程调试和vs2019多线程调试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 |
CopyRight 2018-2019 实验室设备网 版权所有 |